package com.nulldev.util.net.packets;

public enum PacketMode {
	/**
	 * Inital packet mode, supported up to 64KB of data at once. <br>
	 * Packet Format: __p2[PACKET_ID]PACKET_DATA
	 */
	@Deprecated
	LEGACY_V1,
	/**
	 * Compressed variation of LEGACY_V1. <br>
	 * Packet Format: __p2c[PACKET_ID]COMPRESSED_PACKET_DATA
	 */
	@Deprecated
	LEGACY_V1_COMPRESSED,
	/**
	 * Known as NP3 (nPacket v3) [v2 is above and v1 was in nullUtil 1.0] <br>
	 * Remade packet system allowing metadata, encryption, etc... <br>
	 * Allows for packets larger than 64KB. <br>
	 * Packet Format: [NP3{PACKET_ID,METADATA}]PACKET_DATA <br>
	 * Supported Metadata: <br>
	 * - COMP - Compression present. <br>
	 * - COMP_SC - Compression present via smartCompression. <br>
	 * - ENC_NCRYPT - RSA encryption present via nCrypt. <br>
	 * - DATA_BYTES - Data was larger than 64KB, must be appended manually. <br>
	 * - REPLY_ID - Key for ASync sockets, <b> NOT IMPLEMENTED! </b> <br>
	 * - PART - Partial packet data must be bulit. <b> NOT IMPLEMENTED! </b> <br>
	 */
	STANDARD_V2,
	
	/**
	 * See STANDARD_V2, same features, with encryption from nCrypt used.
	 */
	STANDARD_V2_ENCRYPTED,
	
	/**
	 * See STANDARD_V2, same features via nCrypt but <br>
	 * - Packet header is fully encrypted with metadata. <br>
	 * - Packet Data is fully encrypted.
	 */
	STANDARD_V2_FULLY_ENCRYPTED,
	
	/**
	 * See STANDARD_V2, same features but uses smartCompression to provide up to 25%+ reduction in packet size. <br>
	 * <b> DO NOT USE CURRENTLY BROKEN. </b>
	 */
	@Deprecated // Not Implemented
	STANDARD_V2_COMPRESSED,
	
	;
	
	/**
	 * Default Mode used in nPacket API
	 */
	public static final PacketMode defaultMode = PacketMode.STANDARD_V2;
	
	
}
